印刷检查示例 - 使用基于 Blob 的 Template Matching 进行位置校正和缺陷检测

简短说明

文件: \examples\Processing\ObjectFeatures\PrintInspection\PrintInspection_Blob.vad

默认平台: imaFlex CXP-12 Quad

简要说明

基于 Blob 的位置校正与缺陷检测

在设计“PrintInspection_Blob.vad”中,执行了对象的位置和方向校正以及图像中后续的缺陷检测。 该示例适用于具有至少两个可用作模板的印记的对象。特定印记在对象中应仅出现一次。 在示例图像“TestImage.tif”中,字母“K”和“g”被选为大小为 29x38 像素的模板 1 和 2。设计顶层的注释框中描述了将设计适配到您的示例图像的各个步骤。 在该设计中,基于对对象上两个模板的 blob 检测识别来确定对象的位置和方向。根据两个模板的坐标计算对象的重心。根据模板 1 和 2 的相对位置计算对象的旋转角度 Phi。 利用这些信息,执行如 下所述的几何变换。该变换的实现等同于 下所述的设计示例“Geometric Transformation_ImageMoments.va”。 通过从计算出的校正对象中减去对象的“黄金主模板(golden master)”,可以发现在位置和方向校正后的对象上的缺陷。 剩下的就是可能的缺陷。通过 blob 检测确定这些缺陷的位置,并将其附加到位姿校正后的对象的图像中。 用户可以选择是将带有缺陷的图像传输到 PC,还是将带有位置校正后的对象及附加缺陷位置的图像传输到 PC。 接下来将解释基本设计结构和各个模块的功能。如图 380 所示,您可以看到基本设计结构。

VA 设计“PrintInspection_Blob.vad”的基本设计结构

图 380. VA 设计“PrintInspection_Blob.vad”的基本设计结构


在 HierarchicalBox FindPatterns(参见图 381)中,采集到的图像(来自方块 ImageAcquisition)在 HierarchicalBox Binarization 中使用简单的阈值进行二值化。当您更改示例图像时,您可以将此阈值调整为适合您的图像。在 HierarchicalBox BlobDetection 中,使用运算符 Blob_Analysis_2D 检测二值化图像中的对象。该运算符的输出是找到的每个对象周围的边界框的 x 坐标、y 坐标和面积。 在设计的注释框中,您可以找到有关这些参数的更详细信息。然后,在方块 BlobSelection 中根据对象的大小和位置对找到的对象进行选择。 仅保留与模板相关的对象的坐标和大小信息。请将用于对象有效大小和位置的参数 IS_InRange 调整为您的模板(在方块 FindPatterns 上右键单击)。坐标和大小信息是 HierarchicalBox ExtractCandidates 的输入。其内容请参见图 382。

HierarchicalBox FindPatterns 的内容

图 381. HierarchicalBox FindPatterns 的内容


HierarchicalBox ExtractCandidates 的内容

图 382. HierarchicalBox ExtractCandidates 的内容


在此,每个对象(通过 blob 分析检测到)作为感兴趣区域从原始图像中被切割出来,使用的运算符为 ImageBufferMultiROIDyn_CutROIs,并作为单帧转发。在 HierarchicalBox DeterminingCOGTemplates(参见图 383)中,执行模板匹配以及随后在图像中确定其坐标的操作。

HierarchicalBox DetermingCOGTemplates 的内容

图 383. HierarchicalBox DetermingCOGTemplates 的内容


在方块 TemplateMatching(其内容参见图 384)中,执行所选对象与模板 1 和 2(大小为 29x38 像素的字母“K”和“g”)的匹配。 在 Templates 中,模板 1 和 2 作为 16 位值(每个模板 8 位)写入查找表 LUT_Values 中。然后,在方块 Match 中,将图像中找到的对象与模板 1 和 2 进行匹配,表现为简单的 3x3 核减法。在 TemplateMatch 中选择产生最佳匹配的核分量。回到 DeterminingCOGTemplates 的内容,通过运算符 RowMin_Template1 和 RowMin_Template2 选择最佳模板匹配,并通过寄存器 Register_COG_Template1、Register_COG_Template2 以及在方块 SelectLastPixel 中选择最后一个像素来获取模板 1 和 2 的对应坐标。方块 DeterminingCOGTemplates 的输出即为模板 1 和 2 的坐标。

HierarchicalBox TemplateMatching 的内容

图 384. HierarchicalBox TemplateMatching 的内容


回到基本设计结构,我们现在来看 HierarchicalBox COG_Angle,其中根据模板 1 和 2 的坐标确定对象的重心坐标及其旋转角度。参见图 385 中 COG_Angle 的内容。

HierarchicalBox COG_Angle 的内容

图 385. HierarchicalBox COG_Angle 的内容


旋转角度 将在框中计算对象的 RotationAngle 根据

公式 51。


其中 是模板 1 和 2 在 x 和 y 方向上的坐标差。

对象的重心坐标 根据以下公式计算

公式 52。


在此 是对象重心、模板 1 和模板 2 之间的夹角, 是对象未旋转时模板 2、模板 1 与水平线之间的夹角,且 是对象重心与模板 1 之间的距离。更改示例图像时,您必须通过右键单击框来调整这些值 COG_Angle 在“properties”下。

利用关于以下内容的这些信息 , 几何变换在框中执行 GeometricTransformation" (参见图中的基本设计结构 380)等效于节中描述的 VA 示例“GeometricTransformation_ImageMoments.va” .

在框 FindDefects 中可以找到位置和方向校正后的图像输出中可能存在的缺陷,在该框中,将图像的“黄金母版 (golden master)”模板从处理后的图像中减去。在消除残余部分(几何变换后双线性插值的结果)后,框 FindDefects 的输出即为在对象上发现的纯缺陷。通过框 FindDefectPosition 中使用算子 Blob_Analysis_2D 的斑点分析(blob analysis),可以确定这些缺陷的坐标。在框 AppendDefectPositionsToImage 中,这些坐标被附加到位姿校正后的图像上。通过将算子 SourceSelector 的参数“SelectSource”设置为 0 或 1,用户可以选择是通过 DMA 将包含纯缺陷的图像发送到 PC,还是将带有缺陷坐标的校正图像发送到 PC。